//导入包
import 'package:flutter/material.dart';
import 'package:flutter_slidable/flutter_slidable.dart';

//应用入口
void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      //应用名称
      title: 'Flutter Demo',
      //主题
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      //应用首页路由
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;
  @override
  State<StatefulWidget> createState() {
    return _MyHomePageState();
  }
}


class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _doNothing(BuildContext context) {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text(widget.title),
      ),
      body: new Center(
        child: Slidable(
          // 如果可滑动的是可忽略的，则指定一个键。
          key: const ValueKey(0),
          closeOnScroll: false,
          // 启动操作窗格位于左侧或顶部
          startActionPane: ActionPane(
            // 动作是一个小部件，用于控制窗格的动画效果。
            motion: const BehindMotion(),
            // 窗格可以消除滑动。
            // dismissible: DismissiblePane(onDismissed: () {}),

            // 所有操作都在children参数中定义。
            children:[
              // 可滑动操作可以有图标和/或标签
              SlidableAction(
                onPressed: _doNothing,
                backgroundColor: Color(0xFFFE4A49),
                foregroundColor: Colors.white,
                icon: Icons.delete,
                label: 'Delete',
              ),
              SlidableAction(
                onPressed: _doNothing,
                backgroundColor: Color(0xFF21B7CA),
                foregroundColor: Colors.white,
                icon: Icons.share,
                label: 'Share',
              ),
            ],
          ),

          // 结束操作窗格位于右侧或底部。
          endActionPane:  ActionPane(
            motion: ScrollMotion(),
            children: [
              SlidableAction(
                // 一个动作可以比其他动作大。
                flex: 2,
                onPressed: _doNothing,
                backgroundColor: Color(0xFF7BC043),
                foregroundColor: Colors.white,
                icon: Icons.archive,
                label: 'Archive',
              ),
              SlidableAction(
                onPressed: _doNothing,
                backgroundColor: Color(0xFF0392CF),
                foregroundColor: Colors.white,
                icon: Icons.save,
                label: 'Save',
              ),
            ],
          ),

          // 当组件没有被拖动时，用户看到的是可滑动的子组件。
          child: const ListTile(title: Text('Slide me')),
        ),
      )
    );
  }
}
